using System;
using System.Collections.Generic;
using System.Data;
using System.Web.UI.WebControls;
using DM.DAO;
using DM.Entity;

namespace DM.Web.Admin.QuanLyTinTuc
{
    public partial class ThemMoiTinTuc : System.Web.UI.Page
    {
        readonly TinTucDAO tintucService = new TinTucDAO();
        readonly LoaiTinDAO loaiTinService = new LoaiTinDAO();
        readonly HinhDAO hinhService = new HinhDAO();
        NSD Nsd = new NSD();
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                if (Request.QueryString["MaTin"] == null)
                {
                    BindingFormAll();
                }
                else
                {
                    TinTuc tinTucEdit = tintucService.Get(Common.ParseInt32(Request.QueryString["MaTin"].ToString()));
                    BindingFormAll(tinTucEdit);
                }
            }
            
        }
        /// <summary>
        /// Binding dữ liệu vào DropDownListNgonNgu trong trường hợp new
        /// </summary>
        private void BindingDropDownListNgonNgu()
        {
            DropDownListNgonNgu.Items.Add(new ListItem("Tiếng Việt", "1"));
            DropDownListNgonNgu.Items.Add(new ListItem("Tiếng Anh", "2"));
        }
        /// <summary>
        /// Binding dữ liệu vào DropDownListNgonNgu trong trường hợp edit
        /// </summary>
        /// <param name="tinTuc">TrangTinTuc cần edit</param>
        private void BindingDropDownListNgonNgu(Entity.TinTuc tinTuc)
        {
            BindingDropDownListNgonNgu();
            DropDownListNgonNgu.SelectedValue = tinTuc.Ngonngu.ToString();
        }
        /// <summary>
        /// Binding dữ liệu vào DropDownListNhomTin trong trường hợp new
        /// </summary>
        private void BindingDropDownListNhomTin()
        {
            if (DropDownListNhomTin.Items.Count != 0) DropDownListNhomTin.Items.Clear();
            List<LoaiTin> listNhomTin = loaiTinService.getLoaiTinCha();
            foreach (LoaiTin loaiTin in listNhomTin)
            {
                if (loaiTin.Ma != 17 && loaiTin.Ma != 6 && loaiTin.Ma != 23)
                DropDownListNhomTin.Items.Add(new ListItem(loaiTin.Tenloaitin, loaiTin.Ma.ToString()));
            }
        }
        /// <summary>
        /// Binding dữ liệu vào DropDownListNhomTin trong trường hợp edit
        /// </summary>
        /// <param name="tinTuc">TrangTinTuc cần edit</param>
        private void BindingDropDownListNhomTin(Entity.TinTuc tinTuc)
        {
            BindingDropDownListNhomTin();
            Int32 maLoaiTin = tinTuc.Maloaitin;
            string maNhomTin = loaiTinService.getLoaiTinCha(maLoaiTin).Ma.ToString();
            DropDownListNhomTin.SelectedValue = maNhomTin;
        }
        /// <summary>
        /// Binding dữ liệu vào DropDownListLoaiTin trong trường hợp new
        /// </summary>
        private void BindingDropDownListLoaiTin()
        {
            if (DropDownListLoaiTin.Items.Count != 0) DropDownListLoaiTin.Items.Clear();
            List<LoaiTin> listLoaiTin = loaiTinService.GetLoaiTin(Common.ParseInt32(DropDownListNhomTin.SelectedValue));
            foreach (LoaiTin loaiTin in listLoaiTin)
            {
                DropDownListLoaiTin.Items.Add(new ListItem(loaiTin.Tenloaitin, loaiTin.Ma.ToString()));
            }
        }
        /// <summary>
        /// Binding dữ liệu vào DropDownListLoaiTin trong trường hợp edit
        /// </summary>
        /// <param name="tinTuc"></param>
        private void BindingDropDownListLoaiTin(Entity.TinTuc tinTuc)
        {
            BindingDropDownListLoaiTin();
            DropDownListLoaiTin.SelectedValue = tinTuc.Maloaitin.ToString();
        }
        /// <summary>
        /// Binding ảnh vào list ảnh đại diện trong trường hợp sửa ảnh
        /// </summary>
        /// <param name="tinTuc">Tin tức entity</param>
        private void BindingPictureList(Entity.TinTuc tinTuc)
        {
            Hinh hinh = hinhService.Get(tinTuc);
            if (hinh.Hinhurl !=null)
            {
                Session["PictureUpload"] = hinh.Hinhurl;
                pictureBindding(hinh.Hinhurl);
            }
        }
        /// <summary>
        /// Binding dữ liệu vào Form trong trường hợp tạo mới Tin tức
        /// </summary>
        private void BindingFormAll()
        {
            BindingDropDownListNgonNgu();
            BindingDropDownListNhomTin();
            BindingDropDownListLoaiTin();
            Session["PictureUpload"] = null;
        }
        /// <summary>
        /// Binding dữ liệu vào Form trong trường hợp edit
        /// </summary>
        /// <param name="tinTuc">MaTin cần edit</param>
        private void BindingFormAll(Entity.TinTuc tinTuc)
        {
            BindingDropDownListNgonNgu(tinTuc);
            BindingDropDownListNhomTin(tinTuc);
            BindingDropDownListLoaiTin(tinTuc);
            TextBoxTieuDe.Text = tinTuc.Tieude;
            CheckBoxUuTien.Checked = tinTuc.Uutien;
            Hinh hinh = hinhService.Get(tinTuc);
            if (hinh.Hinhurl != null & hinh.Hinhurl!="Photos/default.jpg")
            {
                BindingPictureList(tinTuc);
                Session["PictureUpload"] = hinh.Hinhurl;
            }
            TextBoxMoTa.Text = tinTuc.Mota;
            FCKeditorNoiDung.Value = tinTuc.Noidung;
        }

        protected void DropDownListNhomTin_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindingDropDownListLoaiTin();
        }

        protected void ButtonCancal_Click(object sender, EventArgs e)
        {
            Response.Redirect("../TrangChuQuanTri.aspx");
        }

        protected void ButtonSave_Click(object sender, EventArgs e)
        {
            if (Session["PictureUpload"] == null)
            {
                Common.Show("Bạn chưa nhập ảnh đại diện!",Request.UrlReferrer.ToString());
                return;
            }
            TinTuc tinTuc = new TinTuc();
            tinTuc.Maloaitin = Common.ParseInt32(DropDownListLoaiTin.SelectedValue);
            tinTuc.Tieude = TextBoxTieuDe.Text;
            tinTuc.Mota = TextBoxMoTa.Text;
            tinTuc.Ngaydang = DateTime.Now;
            tinTuc.Tukhoa = "Khong co gi";
            tinTuc.Ngonngu = Common.ParseInt32(DropDownListNgonNgu.SelectedValue);
            tinTuc.Noidung = FCKeditorNoiDung.Value;
            tinTuc.Nsd = 3;
            
            if (Request.QueryString["MaTin"] == null)
            {
                tintucService.Insert(tinTuc);
                TinTuc newTin = tintucService.Get(tinTuc.Tieude);
                SaveHinh(newTin, false);
                Common.Show("Đã lưu thành công","DanhSachTinTuc.aspx");
            }
            else
            {
                tinTuc.Ma = Common.ParseInt32(Request.QueryString["MaTin"]);
                tintucService.Update(tinTuc);
                SaveHinh(tinTuc,true);
                Common.Show("Đã lưu thành công", "DanhSachTinTuc.aspx");
            }
        }

        protected void DataListAnhDaiDien_DeleteCommand(object source, DataListCommandEventArgs e)
        {
            String fileDel = ((Image)e.Item.FindControl("Image1")).ImageUrl;
            fileDel = fileDel.Substring(6);
            try
            {
                Hinh hinhDel = hinhService.Get(fileDel);
                if (hinhDel!=null)
                hinhService.Delete(hinhDel);
                Common.deleteFile((string) Session["PictureUpload"]);
            }
            catch (Exception Ex)
            {
                Common.Show(Ex.ToString());
            }
            DataListAnhDaiDien.DataSource = null;
            DataListAnhDaiDien.DataBind();
            Session["PictureUpload"] = null;
        }

        protected void ButtonUpload_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                if (Session["PictureUpload"] != null)
                {
                    Common.Show("Chỉ có thể Upload một ảnh đại diện! Xóa ảnh cũ nếu muốn Upload ảnh khác!");
                }
                else
                {
                    try
                    {
                        Session["PictureUpload"] = Common.FilePhoto_Upload(FileUpload1,
                                                                            Request.PhysicalApplicationPath +
                                                                            "Photos/");
                    }
                    catch (Exception exception)
                    {
                        LabelUploadErr.Text = exception.Message;
                        LabelUploadErr.Visible = true;
                        return;
                    }
                }
            }
            if (Session["PictureUpload"] != null)
            {
                string linkarr = Session["PictureUpload"].ToString();
                pictureBindding(linkarr);
            }
        }
        
        /// <summary>
        /// Hiện thị ảnh lên màn hình
        /// </summary>
        /// <param name="link">link ảnh</param>
        /// <param name="dl">datalist</param>
        protected void pictureBindding(string link)
        {
            DataTable dtPicture = new DataTable();
            dtPicture.Columns.Add("link");
            DataRow dtRow = dtPicture.NewRow();
            dtRow["link"] = "../../" + link;
            dtPicture.Rows.Add(dtRow);
            DataListAnhDaiDien.DataSource = dtPicture;
            DataListAnhDaiDien.DataBind();
        }
        /// <summary>
        /// Lưu đường dẫn hình vào CSDL
        /// </summary>
        /// <param name="tinTuc">Mã tin</param>
        /// <param name="IsEdit">true: sửa, false tạo mới</param>
        private void SaveHinh( Entity.TinTuc tinTuc, bool IsEdit)
        {
            if (IsEdit)//Cập nhật tin tức
            {
                Hinh hinh = hinhService.Get(tinTuc);

                if (Session["PictureUpload"] == null)
                {

                    hinh.Hinhmota = tinTuc.Tieude;
                    hinh.Matin = tinTuc.Ma;
                    if (hinh.Hinhurl == null)
                    {
                        hinh.Hinhurl = "Photos/default.jpg";
                        hinhService.Insert(hinh);
                    }
                    else
                    {
                        hinh.Hinhurl = "Photos/default.jpg";
                        hinhService.Update(hinh);
                    }
                }
                else
                {
                    if (hinh.Hinhurl == null)
                    {
                        hinh.Hinhurl = (string) Session["PictureUpload"];
                        hinh.Hinhmota = tinTuc.Tieude;
                        hinh.Matin = tinTuc.Ma;
                        hinhService.Insert(hinh);
                    }
                    else
                    {
                        hinh.Hinhurl = Session["PictureUpload"] as string;
                        hinh.Hinhmota = tinTuc.Tieude;
                        hinhService.Update(hinh);
                    }
                }
            }
            else//Thêm mới tin tức
            {
                Hinh hinh = new Hinh();
                hinh.Matin = tinTuc.Ma;
                hinh.Hinhmota = tinTuc.Tieude;
                hinh.Hinhurl = (Session["PictureUpload"] != null)? Session["PictureUpload"].ToString():"Photos/default.jpg";
                hinhService.Insert(hinh);
            }
        }
    }
}

